\subsection{pgmspace.h File Reference}
\label{pgmspace_8h}\index{pgmspace.h@{pgmspace.h}}
{\ttfamily \#include $<$inttypes.h$>$}\par
{\ttfamily \#include $<$stddef.h$>$}\par
{\ttfamily \#include $<$avr/io.h$>$}\par
\subsubsection*{Defines}
\begin{DoxyCompactItemize}
\item 
\#define {\bf \_\-\_\-need\_\-size\_\-t}
\item 
\#define {\bf \_\-\_\-ATTR\_\-CONST\_\-\_\-}~\_\-\_\-attribute\_\-\_\-((\_\-\_\-const\_\-\_\-))
\item 
\#define {\bf \_\-\_\-ATTR\_\-PROGMEM\_\-\_\-}~\_\-\_\-attribute\_\-\_\-((\_\-\_\-progmem\_\-\_\-))
\item 
\#define {\bf \_\-\_\-ATTR\_\-PURE\_\-\_\-}~\_\-\_\-attribute\_\-\_\-((\_\-\_\-pure\_\-\_\-))
\item 
\#define {\bf PROGMEM}~\_\-\_\-ATTR\_\-PROGMEM\_\-\_\-
\item 
\#define {\bf PGM\_\-P}~const char $\ast$
\item 
\#define {\bf PGM\_\-VOID\_\-P}~const void $\ast$
\item 
\#define {\bf PSTR}(s)~(\_\-\_\-extension\_\-\_\-(\{static const char \_\-\_\-c[$\,$] PROGMEM = (s); \&\_\-\_\-c[0];\}))
\item 
\#define {\bf \_\-\_\-LPM\_\-classic\_\-\_\-}(addr)
\item 
\#define {\bf \_\-\_\-LPM\_\-enhanced\_\-\_\-}(addr)
\item 
\#define {\bf \_\-\_\-LPM\_\-word\_\-classic\_\-\_\-}(addr)
\item 
\#define {\bf \_\-\_\-LPM\_\-word\_\-enhanced\_\-\_\-}(addr)
\item 
\#define {\bf \_\-\_\-LPM\_\-dword\_\-classic\_\-\_\-}(addr)
\item 
\#define {\bf \_\-\_\-LPM\_\-dword\_\-enhanced\_\-\_\-}(addr)
\item 
\#define {\bf \_\-\_\-LPM\_\-float\_\-classic\_\-\_\-}(addr)
\item 
\#define {\bf \_\-\_\-LPM\_\-float\_\-enhanced\_\-\_\-}(addr)
\item 
\#define {\bf \_\-\_\-LPM}(addr)~\_\-\_\-LPM\_\-classic\_\-\_\-(addr)
\item 
\#define {\bf \_\-\_\-LPM\_\-word}(addr)~\_\-\_\-LPM\_\-word\_\-classic\_\-\_\-(addr)
\item 
\#define {\bf \_\-\_\-LPM\_\-dword}(addr)~\_\-\_\-LPM\_\-dword\_\-classic\_\-\_\-(addr)
\item 
\#define {\bf \_\-\_\-LPM\_\-float}(addr)~\_\-\_\-LPM\_\-float\_\-classic\_\-\_\-(addr)
\item 
\#define {\bf pgm\_\-read\_\-byte\_\-near}(address\_\-short)~\_\-\_\-LPM((uint16\_\-t)(address\_\-short))
\item 
\#define {\bf pgm\_\-read\_\-word\_\-near}(address\_\-short)~\_\-\_\-LPM\_\-word((uint16\_\-t)(address\_\-short))
\item 
\#define {\bf pgm\_\-read\_\-dword\_\-near}(address\_\-short)~\_\-\_\-LPM\_\-dword((uint16\_\-t)(address\_\-short))
\item 
\#define {\bf pgm\_\-read\_\-float\_\-near}(address\_\-short)~\_\-\_\-LPM\_\-float((uint16\_\-t)(address\_\-short))
\item 
\#define {\bf pgm\_\-read\_\-byte}(address\_\-short)~pgm\_\-read\_\-byte\_\-near(address\_\-short)
\item 
\#define {\bf pgm\_\-read\_\-word}(address\_\-short)~pgm\_\-read\_\-word\_\-near(address\_\-short)
\item 
\#define {\bf pgm\_\-read\_\-dword}(address\_\-short)~pgm\_\-read\_\-dword\_\-near(address\_\-short)
\item 
\#define {\bf pgm\_\-read\_\-float}(address\_\-short)~pgm\_\-read\_\-float\_\-near(address\_\-short)
\item 
\#define {\bf pgm\_\-get\_\-far\_\-address}(var)
\end{DoxyCompactItemize}
\subsubsection*{Functions}
\begin{DoxyCompactItemize}
\item 
const void $\ast$ {\bf memchr\_\-P} (const void $\ast$, int \_\-\_\-val, size\_\-t \_\-\_\-len) \_\-\_\-ATTR\_\-CONST\_\-\_\-
\item 
int {\bf memcmp\_\-P} (const void $\ast$, const void $\ast$, size\_\-t) \_\-\_\-ATTR\_\-PURE\_\-\_\-
\item 
void $\ast$ {\bf memccpy\_\-P} (void $\ast$, const void $\ast$, int \_\-\_\-val, size\_\-t)
\item 
void $\ast$ {\bf memcpy\_\-P} (void $\ast$, const void $\ast$, size\_\-t)
\item 
void $\ast$ {\bf memmem\_\-P} (const void $\ast$, size\_\-t, const void $\ast$, size\_\-t) \_\-\_\-ATTR\_\-PURE\_\-\_\-
\item 
const void $\ast$ {\bf memrchr\_\-P} (const void $\ast$, int \_\-\_\-val, size\_\-t \_\-\_\-len) \_\-\_\-ATTR\_\-CONST\_\-\_\-
\item 
char $\ast$ {\bf strcat\_\-P} (char $\ast$, const char $\ast$)
\item 
const char $\ast$ {\bf strchr\_\-P} (const char $\ast$, int \_\-\_\-val) \_\-\_\-ATTR\_\-CONST\_\-\_\-
\item 
const char $\ast$ {\bf strchrnul\_\-P} (const char $\ast$, int \_\-\_\-val) \_\-\_\-ATTR\_\-CONST\_\-\_\-
\item 
int {\bf strcmp\_\-P} (const char $\ast$, const char $\ast$) \_\-\_\-ATTR\_\-PURE\_\-\_\-
\item 
char $\ast$ {\bf strcpy\_\-P} (char $\ast$, const char $\ast$)
\item 
int {\bf strcasecmp\_\-P} (const char $\ast$, const char $\ast$) \_\-\_\-ATTR\_\-PURE\_\-\_\-
\item 
char $\ast$ {\bf strcasestr\_\-P} (const char $\ast$, const char $\ast$) \_\-\_\-ATTR\_\-PURE\_\-\_\-
\item 
size\_\-t {\bf strcspn\_\-P} (const char $\ast$\_\-\_\-s, const char $\ast$\_\-\_\-reject) \_\-\_\-ATTR\_\-PURE\_\-\_\-
\item 
size\_\-t {\bf strlcat\_\-P} (char $\ast$, const char $\ast$, size\_\-t)
\item 
size\_\-t {\bf strlcpy\_\-P} (char $\ast$, const char $\ast$, size\_\-t)
\item 
size\_\-t {\bf \_\-\_\-strlen\_\-P} (const char $\ast$) \_\-\_\-ATTR\_\-CONST\_\-\_\-
\item 
size\_\-t {\bf strnlen\_\-P} (const char $\ast$, size\_\-t) \_\-\_\-ATTR\_\-CONST\_\-\_\-
\item 
int {\bf strncmp\_\-P} (const char $\ast$, const char $\ast$, size\_\-t) \_\-\_\-ATTR\_\-PURE\_\-\_\-
\item 
int {\bf strncasecmp\_\-P} (const char $\ast$, const char $\ast$, size\_\-t) \_\-\_\-ATTR\_\-PURE\_\-\_\-
\item 
char $\ast$ {\bf strncat\_\-P} (char $\ast$, const char $\ast$, size\_\-t)
\item 
char $\ast$ {\bf strncpy\_\-P} (char $\ast$, const char $\ast$, size\_\-t)
\item 
char $\ast$ {\bf strpbrk\_\-P} (const char $\ast$\_\-\_\-s, const char $\ast$\_\-\_\-accept) \_\-\_\-ATTR\_\-PURE\_\-\_\-
\item 
const char $\ast$ {\bf strrchr\_\-P} (const char $\ast$, int \_\-\_\-val) \_\-\_\-ATTR\_\-CONST\_\-\_\-
\item 
char $\ast$ {\bf strsep\_\-P} (char $\ast$$\ast$\_\-\_\-sp, const char $\ast$\_\-\_\-delim)
\item 
size\_\-t {\bf strspn\_\-P} (const char $\ast$\_\-\_\-s, const char $\ast$\_\-\_\-accept) \_\-\_\-ATTR\_\-PURE\_\-\_\-
\item 
char $\ast$ {\bf strstr\_\-P} (const char $\ast$, const char $\ast$) \_\-\_\-ATTR\_\-PURE\_\-\_\-
\item 
char $\ast$ {\bf strtok\_\-P} (char $\ast$\_\-\_\-s, const char $\ast$\_\-\_\-delim)
\item 
char $\ast$ {\bf strtok\_\-rP} (char $\ast$\_\-\_\-s, const char $\ast$\_\-\_\-delim, char $\ast$$\ast$\_\-\_\-last)
\item 
size\_\-t {\bf strlen\_\-PF} (uint\_\-farptr\_\-t src) \_\-\_\-ATTR\_\-CONST\_\-\_\-
\item 
size\_\-t {\bf strnlen\_\-PF} (uint\_\-farptr\_\-t src, size\_\-t len) \_\-\_\-ATTR\_\-CONST\_\-\_\-
\item 
void $\ast$ {\bf memcpy\_\-PF} (void $\ast$dest, uint\_\-farptr\_\-t src, size\_\-t len)
\item 
char $\ast$ {\bf strcpy\_\-PF} (char $\ast$dest, uint\_\-farptr\_\-t src)
\item 
char $\ast$ {\bf strncpy\_\-PF} (char $\ast$dest, uint\_\-farptr\_\-t src, size\_\-t len)
\item 
char $\ast$ {\bf strcat\_\-PF} (char $\ast$dest, uint\_\-farptr\_\-t src)
\item 
size\_\-t {\bf strlcat\_\-PF} (char $\ast${\bf dst}, uint\_\-farptr\_\-t src, size\_\-t siz)
\item 
char $\ast$ {\bf strncat\_\-PF} (char $\ast$dest, uint\_\-farptr\_\-t src, size\_\-t len)
\item 
int {\bf strcmp\_\-PF} (const char $\ast$s1, uint\_\-farptr\_\-t s2) \_\-\_\-ATTR\_\-PURE\_\-\_\-
\item 
int {\bf strncmp\_\-PF} (const char $\ast$s1, uint\_\-farptr\_\-t s2, size\_\-t n) \_\-\_\-ATTR\_\-PURE\_\-\_\-
\item 
int {\bf strcasecmp\_\-PF} (const char $\ast$s1, uint\_\-farptr\_\-t s2) \_\-\_\-ATTR\_\-PURE\_\-\_\-
\item 
int {\bf strncasecmp\_\-PF} (const char $\ast$s1, uint\_\-farptr\_\-t s2, size\_\-t n) \_\-\_\-ATTR\_\-PURE\_\-\_\-
\item 
char $\ast$ {\bf strstr\_\-PF} (const char $\ast$s1, uint\_\-farptr\_\-t s2)
\item 
size\_\-t {\bf strlcpy\_\-PF} (char $\ast${\bf dst}, uint\_\-farptr\_\-t src, size\_\-t siz)
\item 
int {\bf memcmp\_\-PF} (const void $\ast$, uint\_\-farptr\_\-t, size\_\-t) \_\-\_\-ATTR\_\-PURE\_\-\_\-
\item 
{\bf \_\-\_\-attribute\_\-\_\-} ((\_\-\_\-always\_\-inline\_\-\_\-)) static inline size\_\-t strlen\_\-P(const char $\ast$s)
\item 
static size\_\-t {\bf strlen\_\-P} (const char $\ast$s)
\end{DoxyCompactItemize}


\subsubsection{Detailed Description}


\subsubsection{Define Documentation}
\index{pgmspace.h@{pgmspace.h}!\_\-\_\-ATTR\_\-CONST\_\-\_\-@{\_\-\_\-ATTR\_\-CONST\_\-\_\-}}
\index{\_\-\_\-ATTR\_\-CONST\_\-\_\-@{\_\-\_\-ATTR\_\-CONST\_\-\_\-}!pgmspace.h@{pgmspace.h}}
\paragraph[{\_\-\_\-ATTR\_\-CONST\_\-\_\-}]{\setlength{\rightskip}{0pt plus 5cm}\#define \_\-\_\-ATTR\_\-CONST\_\-\_\-~\_\-\_\-attribute\_\-\_\-((\_\-\_\-const\_\-\_\-))}\hfill\label{pgmspace_8h_a87f6b1b3880d945610873b9da382e5d4}
\index{pgmspace.h@{pgmspace.h}!\_\-\_\-ATTR\_\-PROGMEM\_\-\_\-@{\_\-\_\-ATTR\_\-PROGMEM\_\-\_\-}}
\index{\_\-\_\-ATTR\_\-PROGMEM\_\-\_\-@{\_\-\_\-ATTR\_\-PROGMEM\_\-\_\-}!pgmspace.h@{pgmspace.h}}
\paragraph[{\_\-\_\-ATTR\_\-PROGMEM\_\-\_\-}]{\setlength{\rightskip}{0pt plus 5cm}\#define \_\-\_\-ATTR\_\-PROGMEM\_\-\_\-~\_\-\_\-attribute\_\-\_\-((\_\-\_\-progmem\_\-\_\-))}\hfill\label{pgmspace_8h_a80fdd263dea318b34bfe11f5c3cbb6f3}
\index{pgmspace.h@{pgmspace.h}!\_\-\_\-ATTR\_\-PURE\_\-\_\-@{\_\-\_\-ATTR\_\-PURE\_\-\_\-}}
\index{\_\-\_\-ATTR\_\-PURE\_\-\_\-@{\_\-\_\-ATTR\_\-PURE\_\-\_\-}!pgmspace.h@{pgmspace.h}}
\paragraph[{\_\-\_\-ATTR\_\-PURE\_\-\_\-}]{\setlength{\rightskip}{0pt plus 5cm}\#define \_\-\_\-ATTR\_\-PURE\_\-\_\-~\_\-\_\-attribute\_\-\_\-((\_\-\_\-pure\_\-\_\-))}\hfill\label{pgmspace_8h_a536d41f7767c0a501c4f9aa625ef0c58}
\index{pgmspace.h@{pgmspace.h}!\_\-\_\-LPM@{\_\-\_\-LPM}}
\index{\_\-\_\-LPM@{\_\-\_\-LPM}!pgmspace.h@{pgmspace.h}}
\paragraph[{\_\-\_\-LPM}]{\setlength{\rightskip}{0pt plus 5cm}\#define \_\-\_\-LPM(
\begin{DoxyParamCaption}
\item[{}]{addr}
\end{DoxyParamCaption}
)~\_\-\_\-LPM\_\-classic\_\-\_\-(addr)}\hfill\label{pgmspace_8h_a08a72fff52c720c8c4da68d94bcbcfb7}
\index{pgmspace.h@{pgmspace.h}!\_\-\_\-LPM\_\-classic\_\-\_\-@{\_\-\_\-LPM\_\-classic\_\-\_\-}}
\index{\_\-\_\-LPM\_\-classic\_\-\_\-@{\_\-\_\-LPM\_\-classic\_\-\_\-}!pgmspace.h@{pgmspace.h}}
\paragraph[{\_\-\_\-LPM\_\-classic\_\-\_\-}]{\setlength{\rightskip}{0pt plus 5cm}\#define \_\-\_\-LPM\_\-classic\_\-\_\-(
\begin{DoxyParamCaption}
\item[{}]{addr}
\end{DoxyParamCaption}
)}\hfill\label{pgmspace_8h_aca983107cfbdef8ba6763386d3d32a95}
{\bfseries Value:}
\begin{DoxyCode}
(__extension__({                \
    uint16_t __addr16 = (uint16_t)(addr); \
    uint8_t __result;           \
    __asm__                     \
    (                           \
        "lpm" "\n\t"            \
        "mov %0, r0" "\n\t"     \
        : "=r" (__result)       \
        : "z" (__addr16)        \
        : "r0"                  \
    );                          \
    __result;                   \
}))
\end{DoxyCode}
\index{pgmspace.h@{pgmspace.h}!\_\-\_\-LPM\_\-dword@{\_\-\_\-LPM\_\-dword}}
\index{\_\-\_\-LPM\_\-dword@{\_\-\_\-LPM\_\-dword}!pgmspace.h@{pgmspace.h}}
\paragraph[{\_\-\_\-LPM\_\-dword}]{\setlength{\rightskip}{0pt plus 5cm}\#define \_\-\_\-LPM\_\-dword(
\begin{DoxyParamCaption}
\item[{}]{addr}
\end{DoxyParamCaption}
)~\_\-\_\-LPM\_\-dword\_\-classic\_\-\_\-(addr)}\hfill\label{pgmspace_8h_a2ca4c178d5b7cc946d5f9946cfadb60a}
\index{pgmspace.h@{pgmspace.h}!\_\-\_\-LPM\_\-dword\_\-classic\_\-\_\-@{\_\-\_\-LPM\_\-dword\_\-classic\_\-\_\-}}
\index{\_\-\_\-LPM\_\-dword\_\-classic\_\-\_\-@{\_\-\_\-LPM\_\-dword\_\-classic\_\-\_\-}!pgmspace.h@{pgmspace.h}}
\paragraph[{\_\-\_\-LPM\_\-dword\_\-classic\_\-\_\-}]{\setlength{\rightskip}{0pt plus 5cm}\#define \_\-\_\-LPM\_\-dword\_\-classic\_\-\_\-(
\begin{DoxyParamCaption}
\item[{}]{addr}
\end{DoxyParamCaption}
)}\hfill\label{pgmspace_8h_ade9afae7533e1b3054afd46cafd4d0a4}
{\bfseries Value:}
\begin{DoxyCode}
(__extension__({                            \
    uint16_t __addr16 = (uint16_t)(addr);   \
    uint32_t __result;                      \
    __asm__                                 \
    (                                       \
        "lpm"           "\n\t"              \
        "mov %A0, r0"   "\n\t"              \
        "adiw r30, 1"   "\n\t"              \
        "lpm"           "\n\t"              \
        "mov %B0, r0"   "\n\t"              \
        "adiw r30, 1"   "\n\t"              \
        "lpm"           "\n\t"              \
        "mov %C0, r0"   "\n\t"              \
        "adiw r30, 1"   "\n\t"              \
        "lpm"           "\n\t"              \
        "mov %D0, r0"   "\n\t"              \
        : "=r" (__result), "=z" (__addr16)  \
        : "1" (__addr16)                    \
        : "r0"                              \
    );                                      \
    __result;                               \
}))
\end{DoxyCode}
\index{pgmspace.h@{pgmspace.h}!\_\-\_\-LPM\_\-dword\_\-enhanced\_\-\_\-@{\_\-\_\-LPM\_\-dword\_\-enhanced\_\-\_\-}}
\index{\_\-\_\-LPM\_\-dword\_\-enhanced\_\-\_\-@{\_\-\_\-LPM\_\-dword\_\-enhanced\_\-\_\-}!pgmspace.h@{pgmspace.h}}
\paragraph[{\_\-\_\-LPM\_\-dword\_\-enhanced\_\-\_\-}]{\setlength{\rightskip}{0pt plus 5cm}\#define \_\-\_\-LPM\_\-dword\_\-enhanced\_\-\_\-(
\begin{DoxyParamCaption}
\item[{}]{addr}
\end{DoxyParamCaption}
)}\hfill\label{pgmspace_8h_a51a9c87d5a2447c4e481d6c0cde5915e}
{\bfseries Value:}
\begin{DoxyCode}
(__extension__({                            \
    uint16_t __addr16 = (uint16_t)(addr);   \
    uint32_t __result;                      \
    __asm__                                 \
    (                                       \
        "lpm %A0, Z+"   "\n\t"              \
        "lpm %B0, Z+"   "\n\t"              \
        "lpm %C0, Z+"   "\n\t"              \
        "lpm %D0, Z"    "\n\t"              \
        : "=r" (__result), "=z" (__addr16)  \
        : "1" (__addr16)                    \
    );                                      \
    __result;                               \
}))
\end{DoxyCode}
\index{pgmspace.h@{pgmspace.h}!\_\-\_\-LPM\_\-enhanced\_\-\_\-@{\_\-\_\-LPM\_\-enhanced\_\-\_\-}}
\index{\_\-\_\-LPM\_\-enhanced\_\-\_\-@{\_\-\_\-LPM\_\-enhanced\_\-\_\-}!pgmspace.h@{pgmspace.h}}
\paragraph[{\_\-\_\-LPM\_\-enhanced\_\-\_\-}]{\setlength{\rightskip}{0pt plus 5cm}\#define \_\-\_\-LPM\_\-enhanced\_\-\_\-(
\begin{DoxyParamCaption}
\item[{}]{addr}
\end{DoxyParamCaption}
)}\hfill\label{pgmspace_8h_a1b369c790673cf91213297ead210b7a7}
{\bfseries Value:}
\begin{DoxyCode}
(__extension__({                \
    uint16_t __addr16 = (uint16_t)(addr); \
    uint8_t __result;           \
    __asm__                     \
    (                           \
        "lpm %0, Z" "\n\t"      \
        : "=r" (__result)       \
        : "z" (__addr16)        \
    );                          \
    __result;                   \
}))
\end{DoxyCode}
\index{pgmspace.h@{pgmspace.h}!\_\-\_\-LPM\_\-float@{\_\-\_\-LPM\_\-float}}
\index{\_\-\_\-LPM\_\-float@{\_\-\_\-LPM\_\-float}!pgmspace.h@{pgmspace.h}}
\paragraph[{\_\-\_\-LPM\_\-float}]{\setlength{\rightskip}{0pt plus 5cm}\#define \_\-\_\-LPM\_\-float(
\begin{DoxyParamCaption}
\item[{}]{addr}
\end{DoxyParamCaption}
)~\_\-\_\-LPM\_\-float\_\-classic\_\-\_\-(addr)}\hfill\label{pgmspace_8h_a9153bd8c33415e46493483d8b1381cd2}
\index{pgmspace.h@{pgmspace.h}!\_\-\_\-LPM\_\-float\_\-classic\_\-\_\-@{\_\-\_\-LPM\_\-float\_\-classic\_\-\_\-}}
\index{\_\-\_\-LPM\_\-float\_\-classic\_\-\_\-@{\_\-\_\-LPM\_\-float\_\-classic\_\-\_\-}!pgmspace.h@{pgmspace.h}}
\paragraph[{\_\-\_\-LPM\_\-float\_\-classic\_\-\_\-}]{\setlength{\rightskip}{0pt plus 5cm}\#define \_\-\_\-LPM\_\-float\_\-classic\_\-\_\-(
\begin{DoxyParamCaption}
\item[{}]{addr}
\end{DoxyParamCaption}
)}\hfill\label{pgmspace_8h_a7121f301197b01eae138d18274dde754}
{\bfseries Value:}
\begin{DoxyCode}
(__extension__({                            \
    uint16_t __addr16 = (uint16_t)(addr);   \
    float __result;                         \
    __asm__                                 \
    (                                       \
        "lpm"           "\n\t"              \
        "mov %A0, r0"   "\n\t"              \
        "adiw r30, 1"   "\n\t"              \
        "lpm"           "\n\t"              \
        "mov %B0, r0"   "\n\t"              \
        "adiw r30, 1"   "\n\t"              \
        "lpm"           "\n\t"              \
        "mov %C0, r0"   "\n\t"              \
        "adiw r30, 1"   "\n\t"              \
        "lpm"           "\n\t"              \
        "mov %D0, r0"   "\n\t"              \
        : "=r" (__result), "=z" (__addr16)  \
        : "1" (__addr16)                    \
        : "r0"                              \
    );                                      \
    __result;                               \
}))
\end{DoxyCode}
\index{pgmspace.h@{pgmspace.h}!\_\-\_\-LPM\_\-float\_\-enhanced\_\-\_\-@{\_\-\_\-LPM\_\-float\_\-enhanced\_\-\_\-}}
\index{\_\-\_\-LPM\_\-float\_\-enhanced\_\-\_\-@{\_\-\_\-LPM\_\-float\_\-enhanced\_\-\_\-}!pgmspace.h@{pgmspace.h}}
\paragraph[{\_\-\_\-LPM\_\-float\_\-enhanced\_\-\_\-}]{\setlength{\rightskip}{0pt plus 5cm}\#define \_\-\_\-LPM\_\-float\_\-enhanced\_\-\_\-(
\begin{DoxyParamCaption}
\item[{}]{addr}
\end{DoxyParamCaption}
)}\hfill\label{pgmspace_8h_ad7f1d1a85be927ecf0912371791ec7cb}
{\bfseries Value:}
\begin{DoxyCode}
(__extension__({                            \
    uint16_t __addr16 = (uint16_t)(addr);   \
    float __result;                         \
    __asm__                                 \
    (                                       \
        "lpm %A0, Z+"   "\n\t"              \
        "lpm %B0, Z+"   "\n\t"              \
        "lpm %C0, Z+"   "\n\t"              \
        "lpm %D0, Z"    "\n\t"              \
        : "=r" (__result), "=z" (__addr16)  \
        : "1" (__addr16)                    \
    );                                      \
    __result;                               \
}))
\end{DoxyCode}
\index{pgmspace.h@{pgmspace.h}!\_\-\_\-LPM\_\-word@{\_\-\_\-LPM\_\-word}}
\index{\_\-\_\-LPM\_\-word@{\_\-\_\-LPM\_\-word}!pgmspace.h@{pgmspace.h}}
\paragraph[{\_\-\_\-LPM\_\-word}]{\setlength{\rightskip}{0pt plus 5cm}\#define \_\-\_\-LPM\_\-word(
\begin{DoxyParamCaption}
\item[{}]{addr}
\end{DoxyParamCaption}
)~\_\-\_\-LPM\_\-word\_\-classic\_\-\_\-(addr)}\hfill\label{pgmspace_8h_a68a101b9775c6ca1ce63ffd00cb847fa}
\index{pgmspace.h@{pgmspace.h}!\_\-\_\-LPM\_\-word\_\-classic\_\-\_\-@{\_\-\_\-LPM\_\-word\_\-classic\_\-\_\-}}
\index{\_\-\_\-LPM\_\-word\_\-classic\_\-\_\-@{\_\-\_\-LPM\_\-word\_\-classic\_\-\_\-}!pgmspace.h@{pgmspace.h}}
\paragraph[{\_\-\_\-LPM\_\-word\_\-classic\_\-\_\-}]{\setlength{\rightskip}{0pt plus 5cm}\#define \_\-\_\-LPM\_\-word\_\-classic\_\-\_\-(
\begin{DoxyParamCaption}
\item[{}]{addr}
\end{DoxyParamCaption}
)}\hfill\label{pgmspace_8h_a4fbd191cba8015caf1278918dffdeeab}
{\bfseries Value:}
\begin{DoxyCode}
(__extension__({                            \
    uint16_t __addr16 = (uint16_t)(addr);   \
    uint16_t __result;                      \
    __asm__                                 \
    (                                       \
        "lpm"           "\n\t"              \
        "mov %A0, r0"   "\n\t"              \
        "adiw r30, 1"   "\n\t"              \
        "lpm"           "\n\t"              \
        "mov %B0, r0"   "\n\t"              \
        : "=r" (__result), "=z" (__addr16)  \
        : "1" (__addr16)                    \
        : "r0"                              \
    );                                      \
    __result;                               \
}))
\end{DoxyCode}
\index{pgmspace.h@{pgmspace.h}!\_\-\_\-LPM\_\-word\_\-enhanced\_\-\_\-@{\_\-\_\-LPM\_\-word\_\-enhanced\_\-\_\-}}
\index{\_\-\_\-LPM\_\-word\_\-enhanced\_\-\_\-@{\_\-\_\-LPM\_\-word\_\-enhanced\_\-\_\-}!pgmspace.h@{pgmspace.h}}
\paragraph[{\_\-\_\-LPM\_\-word\_\-enhanced\_\-\_\-}]{\setlength{\rightskip}{0pt plus 5cm}\#define \_\-\_\-LPM\_\-word\_\-enhanced\_\-\_\-(
\begin{DoxyParamCaption}
\item[{}]{addr}
\end{DoxyParamCaption}
)}\hfill\label{pgmspace_8h_ab62d92f898b21110be73d3d70ee99069}
{\bfseries Value:}
\begin{DoxyCode}
(__extension__({                            \
    uint16_t __addr16 = (uint16_t)(addr);   \
    uint16_t __result;                      \
    __asm__                                 \
    (                                       \
        "lpm %A0, Z+"   "\n\t"              \
        "lpm %B0, Z"    "\n\t"              \
        : "=r" (__result), "=z" (__addr16)  \
        : "1" (__addr16)                    \
    );                                      \
    __result;                               \
}))
\end{DoxyCode}
\index{pgmspace.h@{pgmspace.h}!\_\-\_\-need\_\-size\_\-t@{\_\-\_\-need\_\-size\_\-t}}
\index{\_\-\_\-need\_\-size\_\-t@{\_\-\_\-need\_\-size\_\-t}!pgmspace.h@{pgmspace.h}}
\paragraph[{\_\-\_\-need\_\-size\_\-t}]{\setlength{\rightskip}{0pt plus 5cm}\#define \_\-\_\-need\_\-size\_\-t}\hfill\label{pgmspace_8h_a2898830827f947f003d187388f7e6c72}
\index{pgmspace.h@{pgmspace.h}!pgm\_\-get\_\-far\_\-address@{pgm\_\-get\_\-far\_\-address}}
\index{pgm\_\-get\_\-far\_\-address@{pgm\_\-get\_\-far\_\-address}!pgmspace.h@{pgmspace.h}}
\paragraph[{pgm\_\-get\_\-far\_\-address}]{\setlength{\rightskip}{0pt plus 5cm}\#define pgm\_\-get\_\-far\_\-address(
\begin{DoxyParamCaption}
\item[{}]{var}
\end{DoxyParamCaption}
)}\hfill\label{pgmspace_8h_a8ddf0e398bde8078aa9395ac77c83f0a}
{\bfseries Value:}
\begin{DoxyCode}
({                                                    \
    uint_farptr_t tmp;                                \
                                                      \
    __asm__ __volatile__(                             \
                                                      \
            "ldi    %A0, lo8(%1)"           "\n\t"    \
            "ldi    %B0, hi8(%1)"           "\n\t"    \
            "ldi    %C0, hh8(%1)"           "\n\t"    \
            "clr    %D0"                    "\n\t"    \
        :                                             \
            "=d" (tmp)                                \
        :                                             \
            "p"  (&(var))                             \
    );                                                \
    tmp;                                              \
})
\end{DoxyCode}
\index{pgmspace.h@{pgmspace.h}!PGM\_\-P@{PGM\_\-P}}
\index{PGM\_\-P@{PGM\_\-P}!pgmspace.h@{pgmspace.h}}
\paragraph[{PGM\_\-P}]{\setlength{\rightskip}{0pt plus 5cm}\#define PGM\_\-P~const char $\ast$}\hfill\label{pgmspace_8h_a963f816fc88a5d8479c285ed4c630229}
\index{pgmspace.h@{pgmspace.h}!PGM\_\-VOID\_\-P@{PGM\_\-VOID\_\-P}}
\index{PGM\_\-VOID\_\-P@{PGM\_\-VOID\_\-P}!pgmspace.h@{pgmspace.h}}
\paragraph[{PGM\_\-VOID\_\-P}]{\setlength{\rightskip}{0pt plus 5cm}\#define PGM\_\-VOID\_\-P~const void $\ast$}\hfill\label{pgmspace_8h_a84a61d55b7efefabd8419e28f02704f9}
\index{pgmspace.h@{pgmspace.h}!PSTR@{PSTR}}
\index{PSTR@{PSTR}!pgmspace.h@{pgmspace.h}}
\paragraph[{PSTR}]{\setlength{\rightskip}{0pt plus 5cm}\#define PSTR(
\begin{DoxyParamCaption}
\item[{}]{s}
\end{DoxyParamCaption}
)~(\_\-\_\-extension\_\-\_\-(\{static const char \_\-\_\-c[$\,$] PROGMEM = (s); \&\_\-\_\-c[0];\}))}\hfill\label{pgmspace_8h_a05ca900ebf7cd121be73c654d9ccb3eb}


\subsubsection{Function Documentation}
\index{pgmspace.h@{pgmspace.h}!\_\-\_\-attribute\_\-\_\-@{\_\-\_\-attribute\_\-\_\-}}
\index{\_\-\_\-attribute\_\-\_\-@{\_\-\_\-attribute\_\-\_\-}!pgmspace.h@{pgmspace.h}}
\paragraph[{\_\-\_\-attribute\_\-\_\-}]{\setlength{\rightskip}{0pt plus 5cm}\_\-\_\-attribute\_\-\_\- (
\begin{DoxyParamCaption}
\item[{(\_\-\_\-always\_\-inline\_\-\_\-)}]{}
\end{DoxyParamCaption}
) const}\hfill\label{pgmspace_8h_a03982bbf45908729c59388f073bd3ad0}
\index{pgmspace.h@{pgmspace.h}!\_\-\_\-strlen\_\-P@{\_\-\_\-strlen\_\-P}}
\index{\_\-\_\-strlen\_\-P@{\_\-\_\-strlen\_\-P}!pgmspace.h@{pgmspace.h}}
\paragraph[{\_\-\_\-strlen\_\-P}]{\setlength{\rightskip}{0pt plus 5cm}size\_\-t \_\-\_\-strlen\_\-P (
\begin{DoxyParamCaption}
\item[{const char $\ast$}]{}
\end{DoxyParamCaption}
)}\hfill\label{pgmspace_8h_a1a96981116710158f1614948b5b45858}


Referenced by strlen\_\-P().

\index{pgmspace.h@{pgmspace.h}!memccpy\_\-P@{memccpy\_\-P}}
\index{memccpy\_\-P@{memccpy\_\-P}!pgmspace.h@{pgmspace.h}}
\paragraph[{memccpy\_\-P}]{\setlength{\rightskip}{0pt plus 5cm}void$\ast$ memccpy\_\-P (
\begin{DoxyParamCaption}
\item[{void $\ast$}]{, }
\item[{const void $\ast$}]{, }
\item[{int}]{ \_\-\_\-val, }
\item[{size\_\-t}]{}
\end{DoxyParamCaption}
)}\hfill\label{pgmspace_8h_ab634773b9a204254507f42072d914f20}
\index{pgmspace.h@{pgmspace.h}!memchr\_\-P@{memchr\_\-P}}
\index{memchr\_\-P@{memchr\_\-P}!pgmspace.h@{pgmspace.h}}
\paragraph[{memchr\_\-P}]{\setlength{\rightskip}{0pt plus 5cm}const void$\ast$ memchr\_\-P (
\begin{DoxyParamCaption}
\item[{const void $\ast$}]{, }
\item[{int}]{ \_\-\_\-val, }
\item[{size\_\-t}]{ \_\-\_\-len}
\end{DoxyParamCaption}
)}\hfill\label{pgmspace_8h_ae0423b2eaff4e25f983254aeafea650c}
\index{pgmspace.h@{pgmspace.h}!memcmp\_\-P@{memcmp\_\-P}}
\index{memcmp\_\-P@{memcmp\_\-P}!pgmspace.h@{pgmspace.h}}
\paragraph[{memcmp\_\-P}]{\setlength{\rightskip}{0pt plus 5cm}int memcmp\_\-P (
\begin{DoxyParamCaption}
\item[{const void $\ast$}]{, }
\item[{const void $\ast$}]{, }
\item[{size\_\-t}]{}
\end{DoxyParamCaption}
)}\hfill\label{pgmspace_8h_ab1b0b56685303c2452e98914e7e5d6d0}
\index{pgmspace.h@{pgmspace.h}!memcmp\_\-PF@{memcmp\_\-PF}}
\index{memcmp\_\-PF@{memcmp\_\-PF}!pgmspace.h@{pgmspace.h}}
\paragraph[{memcmp\_\-PF}]{\setlength{\rightskip}{0pt plus 5cm}int memcmp\_\-PF (
\begin{DoxyParamCaption}
\item[{const void $\ast$}]{, }
\item[{uint\_\-farptr\_\-t}]{, }
\item[{size\_\-t}]{}
\end{DoxyParamCaption}
)}\hfill\label{pgmspace_8h_a80332272d69f05daab5f177723380175}
\index{pgmspace.h@{pgmspace.h}!memcpy\_\-P@{memcpy\_\-P}}
\index{memcpy\_\-P@{memcpy\_\-P}!pgmspace.h@{pgmspace.h}}
\paragraph[{memcpy\_\-P}]{\setlength{\rightskip}{0pt plus 5cm}void$\ast$ memcpy\_\-P (
\begin{DoxyParamCaption}
\item[{void $\ast$}]{, }
\item[{const void $\ast$}]{, }
\item[{size\_\-t}]{}
\end{DoxyParamCaption}
)}\hfill\label{pgmspace_8h_a735734c4e9324648d698ef3badcd2e54}
\index{pgmspace.h@{pgmspace.h}!memcpy\_\-PF@{memcpy\_\-PF}}
\index{memcpy\_\-PF@{memcpy\_\-PF}!pgmspace.h@{pgmspace.h}}
\paragraph[{memcpy\_\-PF}]{\setlength{\rightskip}{0pt plus 5cm}void$\ast$ memcpy\_\-PF (
\begin{DoxyParamCaption}
\item[{void $\ast$}]{ dest, }
\item[{uint\_\-farptr\_\-t}]{ src, }
\item[{size\_\-t}]{ len}
\end{DoxyParamCaption}
)}\hfill\label{pgmspace_8h_a0f5e8ac4ee26a7e9a3aa1f74a4dacee7}
\index{pgmspace.h@{pgmspace.h}!memmem\_\-P@{memmem\_\-P}}
\index{memmem\_\-P@{memmem\_\-P}!pgmspace.h@{pgmspace.h}}
\paragraph[{memmem\_\-P}]{\setlength{\rightskip}{0pt plus 5cm}void$\ast$ memmem\_\-P (
\begin{DoxyParamCaption}
\item[{const void $\ast$}]{, }
\item[{size\_\-t}]{, }
\item[{const void $\ast$}]{, }
\item[{size\_\-t}]{}
\end{DoxyParamCaption}
)}\hfill\label{pgmspace_8h_acbfbbb4b19f6cab4b59e7c59e237628d}
\index{pgmspace.h@{pgmspace.h}!memrchr\_\-P@{memrchr\_\-P}}
\index{memrchr\_\-P@{memrchr\_\-P}!pgmspace.h@{pgmspace.h}}
\paragraph[{memrchr\_\-P}]{\setlength{\rightskip}{0pt plus 5cm}const void$\ast$ memrchr\_\-P (
\begin{DoxyParamCaption}
\item[{const void $\ast$}]{, }
\item[{int}]{ \_\-\_\-val, }
\item[{size\_\-t}]{ \_\-\_\-len}
\end{DoxyParamCaption}
)}\hfill\label{pgmspace_8h_a63918ecda159ea5364de1f6a8076e333}
\index{pgmspace.h@{pgmspace.h}!strcasecmp\_\-P@{strcasecmp\_\-P}}
\index{strcasecmp\_\-P@{strcasecmp\_\-P}!pgmspace.h@{pgmspace.h}}
\paragraph[{strcasecmp\_\-P}]{\setlength{\rightskip}{0pt plus 5cm}int strcasecmp\_\-P (
\begin{DoxyParamCaption}
\item[{const char $\ast$}]{, }
\item[{const char $\ast$}]{}
\end{DoxyParamCaption}
)}\hfill\label{pgmspace_8h_a4b2a918fb5938763024b3818ee89fbef}
\index{pgmspace.h@{pgmspace.h}!strcasecmp\_\-PF@{strcasecmp\_\-PF}}
\index{strcasecmp\_\-PF@{strcasecmp\_\-PF}!pgmspace.h@{pgmspace.h}}
\paragraph[{strcasecmp\_\-PF}]{\setlength{\rightskip}{0pt plus 5cm}int strcasecmp\_\-PF (
\begin{DoxyParamCaption}
\item[{const char $\ast$}]{ s1, }
\item[{uint\_\-farptr\_\-t}]{ s2}
\end{DoxyParamCaption}
)}\hfill\label{pgmspace_8h_a319ec42a66ba8333213fa10dbe06a606}
\index{pgmspace.h@{pgmspace.h}!strcasestr\_\-P@{strcasestr\_\-P}}
\index{strcasestr\_\-P@{strcasestr\_\-P}!pgmspace.h@{pgmspace.h}}
\paragraph[{strcasestr\_\-P}]{\setlength{\rightskip}{0pt plus 5cm}char$\ast$ strcasestr\_\-P (
\begin{DoxyParamCaption}
\item[{const char $\ast$}]{, }
\item[{const char $\ast$}]{}
\end{DoxyParamCaption}
)}\hfill\label{pgmspace_8h_a5c7373e9cb058edc3922e1d1d8250805}
\index{pgmspace.h@{pgmspace.h}!strcat\_\-P@{strcat\_\-P}}
\index{strcat\_\-P@{strcat\_\-P}!pgmspace.h@{pgmspace.h}}
\paragraph[{strcat\_\-P}]{\setlength{\rightskip}{0pt plus 5cm}char$\ast$ strcat\_\-P (
\begin{DoxyParamCaption}
\item[{char $\ast$}]{, }
\item[{const char $\ast$}]{}
\end{DoxyParamCaption}
)}\hfill\label{pgmspace_8h_a3da24d3983abedc59cbc75c5e82586e0}
\index{pgmspace.h@{pgmspace.h}!strcat\_\-PF@{strcat\_\-PF}}
\index{strcat\_\-PF@{strcat\_\-PF}!pgmspace.h@{pgmspace.h}}
\paragraph[{strcat\_\-PF}]{\setlength{\rightskip}{0pt plus 5cm}char$\ast$ strcat\_\-PF (
\begin{DoxyParamCaption}
\item[{char $\ast$}]{ dest, }
\item[{uint\_\-farptr\_\-t}]{ src}
\end{DoxyParamCaption}
)}\hfill\label{pgmspace_8h_a127529844a9435fa7b5660d3e9330db8}
\index{pgmspace.h@{pgmspace.h}!strchr\_\-P@{strchr\_\-P}}
\index{strchr\_\-P@{strchr\_\-P}!pgmspace.h@{pgmspace.h}}
\paragraph[{strchr\_\-P}]{\setlength{\rightskip}{0pt plus 5cm}const char$\ast$ strchr\_\-P (
\begin{DoxyParamCaption}
\item[{const char $\ast$}]{, }
\item[{int}]{ \_\-\_\-val}
\end{DoxyParamCaption}
)}\hfill\label{pgmspace_8h_a3e4f4d47e5981b84dee69ca0cc77e89c}
\index{pgmspace.h@{pgmspace.h}!strchrnul\_\-P@{strchrnul\_\-P}}
\index{strchrnul\_\-P@{strchrnul\_\-P}!pgmspace.h@{pgmspace.h}}
\paragraph[{strchrnul\_\-P}]{\setlength{\rightskip}{0pt plus 5cm}const char$\ast$ strchrnul\_\-P (
\begin{DoxyParamCaption}
\item[{const char $\ast$}]{, }
\item[{int}]{ \_\-\_\-val}
\end{DoxyParamCaption}
)}\hfill\label{pgmspace_8h_ab964b7dedcdea89586a54dcfab96cafa}
\index{pgmspace.h@{pgmspace.h}!strcmp\_\-P@{strcmp\_\-P}}
\index{strcmp\_\-P@{strcmp\_\-P}!pgmspace.h@{pgmspace.h}}
\paragraph[{strcmp\_\-P}]{\setlength{\rightskip}{0pt plus 5cm}int strcmp\_\-P (
\begin{DoxyParamCaption}
\item[{const char $\ast$}]{, }
\item[{const char $\ast$}]{}
\end{DoxyParamCaption}
)}\hfill\label{pgmspace_8h_ab0c75b8cce460448b747c29231da847c}
\index{pgmspace.h@{pgmspace.h}!strcmp\_\-PF@{strcmp\_\-PF}}
\index{strcmp\_\-PF@{strcmp\_\-PF}!pgmspace.h@{pgmspace.h}}
\paragraph[{strcmp\_\-PF}]{\setlength{\rightskip}{0pt plus 5cm}int strcmp\_\-PF (
\begin{DoxyParamCaption}
\item[{const char $\ast$}]{ s1, }
\item[{uint\_\-farptr\_\-t}]{ s2}
\end{DoxyParamCaption}
)}\hfill\label{pgmspace_8h_ad34d5b7d040fcb97939e939f19d88a5f}
\index{pgmspace.h@{pgmspace.h}!strcpy\_\-P@{strcpy\_\-P}}
\index{strcpy\_\-P@{strcpy\_\-P}!pgmspace.h@{pgmspace.h}}
\paragraph[{strcpy\_\-P}]{\setlength{\rightskip}{0pt plus 5cm}char$\ast$ strcpy\_\-P (
\begin{DoxyParamCaption}
\item[{char $\ast$}]{, }
\item[{const char $\ast$}]{}
\end{DoxyParamCaption}
)}\hfill\label{pgmspace_8h_a3aaa460d1574cb9474b1062d0ceff862}
\index{pgmspace.h@{pgmspace.h}!strcpy\_\-PF@{strcpy\_\-PF}}
\index{strcpy\_\-PF@{strcpy\_\-PF}!pgmspace.h@{pgmspace.h}}
\paragraph[{strcpy\_\-PF}]{\setlength{\rightskip}{0pt plus 5cm}char$\ast$ strcpy\_\-PF (
\begin{DoxyParamCaption}
\item[{char $\ast$}]{ dest, }
\item[{uint\_\-farptr\_\-t}]{ src}
\end{DoxyParamCaption}
)}\hfill\label{pgmspace_8h_a2e984c377ae55a9b40efc5f8335b08b6}
\index{pgmspace.h@{pgmspace.h}!strcspn\_\-P@{strcspn\_\-P}}
\index{strcspn\_\-P@{strcspn\_\-P}!pgmspace.h@{pgmspace.h}}
\paragraph[{strcspn\_\-P}]{\setlength{\rightskip}{0pt plus 5cm}size\_\-t strcspn\_\-P (
\begin{DoxyParamCaption}
\item[{const char $\ast$}]{ \_\-\_\-s, }
\item[{const char $\ast$}]{ \_\-\_\-reject}
\end{DoxyParamCaption}
)}\hfill\label{pgmspace_8h_a8afa4577f8ce7241a948af61e6991c67}
\index{pgmspace.h@{pgmspace.h}!strlcat\_\-P@{strlcat\_\-P}}
\index{strlcat\_\-P@{strlcat\_\-P}!pgmspace.h@{pgmspace.h}}
\paragraph[{strlcat\_\-P}]{\setlength{\rightskip}{0pt plus 5cm}size\_\-t strlcat\_\-P (
\begin{DoxyParamCaption}
\item[{char $\ast$}]{, }
\item[{const char $\ast$}]{, }
\item[{size\_\-t}]{}
\end{DoxyParamCaption}
)}\hfill\label{pgmspace_8h_a85328d5e578db3c60f9753cb1769dc96}
\index{pgmspace.h@{pgmspace.h}!strlcat\_\-PF@{strlcat\_\-PF}}
\index{strlcat\_\-PF@{strlcat\_\-PF}!pgmspace.h@{pgmspace.h}}
\paragraph[{strlcat\_\-PF}]{\setlength{\rightskip}{0pt plus 5cm}size\_\-t strlcat\_\-PF (
\begin{DoxyParamCaption}
\item[{char $\ast$}]{ dst, }
\item[{uint\_\-farptr\_\-t}]{ src, }
\item[{size\_\-t}]{ siz}
\end{DoxyParamCaption}
)}\hfill\label{pgmspace_8h_af632b479b04d0c98caf94de85dc11f3e}
\index{pgmspace.h@{pgmspace.h}!strlcpy\_\-P@{strlcpy\_\-P}}
\index{strlcpy\_\-P@{strlcpy\_\-P}!pgmspace.h@{pgmspace.h}}
\paragraph[{strlcpy\_\-P}]{\setlength{\rightskip}{0pt plus 5cm}size\_\-t strlcpy\_\-P (
\begin{DoxyParamCaption}
\item[{char $\ast$}]{, }
\item[{const char $\ast$}]{, }
\item[{size\_\-t}]{}
\end{DoxyParamCaption}
)}\hfill\label{pgmspace_8h_ab95a4e6a4b527ee389c72bdabb991e08}
\index{pgmspace.h@{pgmspace.h}!strlcpy\_\-PF@{strlcpy\_\-PF}}
\index{strlcpy\_\-PF@{strlcpy\_\-PF}!pgmspace.h@{pgmspace.h}}
\paragraph[{strlcpy\_\-PF}]{\setlength{\rightskip}{0pt plus 5cm}size\_\-t strlcpy\_\-PF (
\begin{DoxyParamCaption}
\item[{char $\ast$}]{ dst, }
\item[{uint\_\-farptr\_\-t}]{ src, }
\item[{size\_\-t}]{ siz}
\end{DoxyParamCaption}
)}\hfill\label{pgmspace_8h_a6674a08f95d5daedce3079b96be63008}
\index{pgmspace.h@{pgmspace.h}!strlen\_\-P@{strlen\_\-P}}
\index{strlen\_\-P@{strlen\_\-P}!pgmspace.h@{pgmspace.h}}
\paragraph[{strlen\_\-P}]{\setlength{\rightskip}{0pt plus 5cm}static size\_\-t strlen\_\-P (
\begin{DoxyParamCaption}
\item[{const char $\ast$}]{ s}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  [inline, static]}}\hfill\label{pgmspace_8h_a795895b98930864d03149ffd701d85c4}


References \_\-\_\-strlen\_\-P().

\index{pgmspace.h@{pgmspace.h}!strlen\_\-PF@{strlen\_\-PF}}
\index{strlen\_\-PF@{strlen\_\-PF}!pgmspace.h@{pgmspace.h}}
\paragraph[{strlen\_\-PF}]{\setlength{\rightskip}{0pt plus 5cm}size\_\-t strlen\_\-PF (
\begin{DoxyParamCaption}
\item[{uint\_\-farptr\_\-t}]{ src}
\end{DoxyParamCaption}
)}\hfill\label{pgmspace_8h_a81b51d7846b5afc721c9415fae4aa37a}
\index{pgmspace.h@{pgmspace.h}!strncasecmp\_\-P@{strncasecmp\_\-P}}
\index{strncasecmp\_\-P@{strncasecmp\_\-P}!pgmspace.h@{pgmspace.h}}
\paragraph[{strncasecmp\_\-P}]{\setlength{\rightskip}{0pt plus 5cm}int strncasecmp\_\-P (
\begin{DoxyParamCaption}
\item[{const char $\ast$}]{, }
\item[{const char $\ast$}]{, }
\item[{size\_\-t}]{}
\end{DoxyParamCaption}
)}\hfill\label{pgmspace_8h_a7a9100487dc0a7e5c501966c94e0ecdb}
\index{pgmspace.h@{pgmspace.h}!strncasecmp\_\-PF@{strncasecmp\_\-PF}}
\index{strncasecmp\_\-PF@{strncasecmp\_\-PF}!pgmspace.h@{pgmspace.h}}
\paragraph[{strncasecmp\_\-PF}]{\setlength{\rightskip}{0pt plus 5cm}int strncasecmp\_\-PF (
\begin{DoxyParamCaption}
\item[{const char $\ast$}]{ s1, }
\item[{uint\_\-farptr\_\-t}]{ s2, }
\item[{size\_\-t}]{ n}
\end{DoxyParamCaption}
)}\hfill\label{pgmspace_8h_a086db857a2372e4c84cc16204ac5292c}
\index{pgmspace.h@{pgmspace.h}!strncat\_\-P@{strncat\_\-P}}
\index{strncat\_\-P@{strncat\_\-P}!pgmspace.h@{pgmspace.h}}
\paragraph[{strncat\_\-P}]{\setlength{\rightskip}{0pt plus 5cm}char$\ast$ strncat\_\-P (
\begin{DoxyParamCaption}
\item[{char $\ast$}]{, }
\item[{const char $\ast$}]{, }
\item[{size\_\-t}]{}
\end{DoxyParamCaption}
)}\hfill\label{pgmspace_8h_a6520ec8f2a54e50949e747a5666e4ca4}
\index{pgmspace.h@{pgmspace.h}!strncat\_\-PF@{strncat\_\-PF}}
\index{strncat\_\-PF@{strncat\_\-PF}!pgmspace.h@{pgmspace.h}}
\paragraph[{strncat\_\-PF}]{\setlength{\rightskip}{0pt plus 5cm}char$\ast$ strncat\_\-PF (
\begin{DoxyParamCaption}
\item[{char $\ast$}]{ dest, }
\item[{uint\_\-farptr\_\-t}]{ src, }
\item[{size\_\-t}]{ len}
\end{DoxyParamCaption}
)}\hfill\label{pgmspace_8h_a71147e3266ac95c66aa66dee8f7fe7a2}
\index{pgmspace.h@{pgmspace.h}!strncmp\_\-P@{strncmp\_\-P}}
\index{strncmp\_\-P@{strncmp\_\-P}!pgmspace.h@{pgmspace.h}}
\paragraph[{strncmp\_\-P}]{\setlength{\rightskip}{0pt plus 5cm}int strncmp\_\-P (
\begin{DoxyParamCaption}
\item[{const char $\ast$}]{, }
\item[{const char $\ast$}]{, }
\item[{size\_\-t}]{}
\end{DoxyParamCaption}
)}\hfill\label{pgmspace_8h_a3139220accf77b43102c23b58d249ee9}
\index{pgmspace.h@{pgmspace.h}!strncmp\_\-PF@{strncmp\_\-PF}}
\index{strncmp\_\-PF@{strncmp\_\-PF}!pgmspace.h@{pgmspace.h}}
\paragraph[{strncmp\_\-PF}]{\setlength{\rightskip}{0pt plus 5cm}int strncmp\_\-PF (
\begin{DoxyParamCaption}
\item[{const char $\ast$}]{ s1, }
\item[{uint\_\-farptr\_\-t}]{ s2, }
\item[{size\_\-t}]{ n}
\end{DoxyParamCaption}
)}\hfill\label{pgmspace_8h_a31c3d78d72e8dc80e192d4bd6a65529e}
\index{pgmspace.h@{pgmspace.h}!strncpy\_\-P@{strncpy\_\-P}}
\index{strncpy\_\-P@{strncpy\_\-P}!pgmspace.h@{pgmspace.h}}
\paragraph[{strncpy\_\-P}]{\setlength{\rightskip}{0pt plus 5cm}char$\ast$ strncpy\_\-P (
\begin{DoxyParamCaption}
\item[{char $\ast$}]{, }
\item[{const char $\ast$}]{, }
\item[{size\_\-t}]{}
\end{DoxyParamCaption}
)}\hfill\label{pgmspace_8h_a745ac22a848883230dc9209908f40499}
\index{pgmspace.h@{pgmspace.h}!strncpy\_\-PF@{strncpy\_\-PF}}
\index{strncpy\_\-PF@{strncpy\_\-PF}!pgmspace.h@{pgmspace.h}}
\paragraph[{strncpy\_\-PF}]{\setlength{\rightskip}{0pt plus 5cm}char$\ast$ strncpy\_\-PF (
\begin{DoxyParamCaption}
\item[{char $\ast$}]{ dest, }
\item[{uint\_\-farptr\_\-t}]{ src, }
\item[{size\_\-t}]{ len}
\end{DoxyParamCaption}
)}\hfill\label{pgmspace_8h_a10a901b7441ec232be7a7b4d00f44b49}
\index{pgmspace.h@{pgmspace.h}!strnlen\_\-P@{strnlen\_\-P}}
\index{strnlen\_\-P@{strnlen\_\-P}!pgmspace.h@{pgmspace.h}}
\paragraph[{strnlen\_\-P}]{\setlength{\rightskip}{0pt plus 5cm}size\_\-t strnlen\_\-P (
\begin{DoxyParamCaption}
\item[{const char $\ast$}]{, }
\item[{size\_\-t}]{}
\end{DoxyParamCaption}
)}\hfill\label{pgmspace_8h_ae49af6f37458622ef579ded4149076fb}
\index{pgmspace.h@{pgmspace.h}!strnlen\_\-PF@{strnlen\_\-PF}}
\index{strnlen\_\-PF@{strnlen\_\-PF}!pgmspace.h@{pgmspace.h}}
\paragraph[{strnlen\_\-PF}]{\setlength{\rightskip}{0pt plus 5cm}size\_\-t strnlen\_\-PF (
\begin{DoxyParamCaption}
\item[{uint\_\-farptr\_\-t}]{ src, }
\item[{size\_\-t}]{ len}
\end{DoxyParamCaption}
)}\hfill\label{pgmspace_8h_ad41f841e17b0f0af09b3fdb3f0e2fac9}
\index{pgmspace.h@{pgmspace.h}!strpbrk\_\-P@{strpbrk\_\-P}}
\index{strpbrk\_\-P@{strpbrk\_\-P}!pgmspace.h@{pgmspace.h}}
\paragraph[{strpbrk\_\-P}]{\setlength{\rightskip}{0pt plus 5cm}char$\ast$ strpbrk\_\-P (
\begin{DoxyParamCaption}
\item[{const char $\ast$}]{ \_\-\_\-s, }
\item[{const char $\ast$}]{ \_\-\_\-accept}
\end{DoxyParamCaption}
)}\hfill\label{pgmspace_8h_afd639f6e1120643f8ceb350ea7e433e2}
\index{pgmspace.h@{pgmspace.h}!strrchr\_\-P@{strrchr\_\-P}}
\index{strrchr\_\-P@{strrchr\_\-P}!pgmspace.h@{pgmspace.h}}
\paragraph[{strrchr\_\-P}]{\setlength{\rightskip}{0pt plus 5cm}const char$\ast$ strrchr\_\-P (
\begin{DoxyParamCaption}
\item[{const char $\ast$}]{, }
\item[{int}]{ \_\-\_\-val}
\end{DoxyParamCaption}
)}\hfill\label{pgmspace_8h_aa5779ba83c3c6258e31801b484fbf76a}
\index{pgmspace.h@{pgmspace.h}!strsep\_\-P@{strsep\_\-P}}
\index{strsep\_\-P@{strsep\_\-P}!pgmspace.h@{pgmspace.h}}
\paragraph[{strsep\_\-P}]{\setlength{\rightskip}{0pt plus 5cm}char$\ast$ strsep\_\-P (
\begin{DoxyParamCaption}
\item[{char $\ast$$\ast$}]{ \_\-\_\-sp, }
\item[{const char $\ast$}]{ \_\-\_\-delim}
\end{DoxyParamCaption}
)}\hfill\label{pgmspace_8h_ab267cf656e76142102c1dc3de6d661a6}
\index{pgmspace.h@{pgmspace.h}!strspn\_\-P@{strspn\_\-P}}
\index{strspn\_\-P@{strspn\_\-P}!pgmspace.h@{pgmspace.h}}
\paragraph[{strspn\_\-P}]{\setlength{\rightskip}{0pt plus 5cm}size\_\-t strspn\_\-P (
\begin{DoxyParamCaption}
\item[{const char $\ast$}]{ \_\-\_\-s, }
\item[{const char $\ast$}]{ \_\-\_\-accept}
\end{DoxyParamCaption}
)}\hfill\label{pgmspace_8h_a9813accb359f237457b8dc97763ccc9f}
\index{pgmspace.h@{pgmspace.h}!strstr\_\-P@{strstr\_\-P}}
\index{strstr\_\-P@{strstr\_\-P}!pgmspace.h@{pgmspace.h}}
\paragraph[{strstr\_\-P}]{\setlength{\rightskip}{0pt plus 5cm}char$\ast$ strstr\_\-P (
\begin{DoxyParamCaption}
\item[{const char $\ast$}]{, }
\item[{const char $\ast$}]{}
\end{DoxyParamCaption}
)}\hfill\label{pgmspace_8h_a63ce7166e7743280d7b071cf27514706}
\index{pgmspace.h@{pgmspace.h}!strstr\_\-PF@{strstr\_\-PF}}
\index{strstr\_\-PF@{strstr\_\-PF}!pgmspace.h@{pgmspace.h}}
\paragraph[{strstr\_\-PF}]{\setlength{\rightskip}{0pt plus 5cm}char$\ast$ strstr\_\-PF (
\begin{DoxyParamCaption}
\item[{const char $\ast$}]{ s1, }
\item[{uint\_\-farptr\_\-t}]{ s2}
\end{DoxyParamCaption}
)}\hfill\label{pgmspace_8h_a7c1caa0d8ecfd966f9946b18bd472fe5}
\index{pgmspace.h@{pgmspace.h}!strtok\_\-P@{strtok\_\-P}}
\index{strtok\_\-P@{strtok\_\-P}!pgmspace.h@{pgmspace.h}}
\paragraph[{strtok\_\-P}]{\setlength{\rightskip}{0pt plus 5cm}char$\ast$ strtok\_\-P (
\begin{DoxyParamCaption}
\item[{char $\ast$}]{ \_\-\_\-s, }
\item[{const char $\ast$}]{ \_\-\_\-delim}
\end{DoxyParamCaption}
)}\hfill\label{pgmspace_8h_a23ff99a4f540a7c138175464cfda12b1}
\index{pgmspace.h@{pgmspace.h}!strtok\_\-rP@{strtok\_\-rP}}
\index{strtok\_\-rP@{strtok\_\-rP}!pgmspace.h@{pgmspace.h}}
\paragraph[{strtok\_\-rP}]{\setlength{\rightskip}{0pt plus 5cm}char$\ast$ strtok\_\-rP (
\begin{DoxyParamCaption}
\item[{char $\ast$}]{ \_\-\_\-s, }
\item[{const char $\ast$}]{ \_\-\_\-delim, }
\item[{char $\ast$$\ast$}]{ \_\-\_\-last}
\end{DoxyParamCaption}
)}\hfill\label{pgmspace_8h_a6fce26031ea463f7793f8443074fb470}
